var a = String('abc');
console.log(a.__proto__);
console.log(a.__proto__.__proto__);
console.log(a.__proto__.__proto__.__proto__);

console.log(String.prototype === a.__proto__);

// function Mother(lastName) {
//   this.lastName = lastName;
// }

// var son = new Mother('Da');

// console.log(son);

// 创建一个新对象
// son

// 新对象会被执行 [[prototype]] 连接
// son.__proto__ = Mother.prototype

// 新对象和函数调用的this会绑定起来
// Mother.call(son, 'Da');

// 执行构造函数中的代码
// son.lastName

// 如果函数没有返回值，那么就会自动返回这个新对象
// return

// 如果不用 new 进行创建，那么原型函数需要具备返回值 this

function Mother(lastName) {
  this.lastName = lastName;
  return this;
}

var son = Mother('Da');

console.log(son);